In a network device such as, for example, a multi-port switch, incoming traffic arriving on all ports are serialized internally such that packets may be processed one at a time per clock interval. In a system in which each port is assigned to one or more time division multiplexing (TDM) timeslots, packets arriving on a port are pushed into an internal pipeline, one at a time during a TDM time slot corresponding to the port. The internal pipeline receives and processes one packet per clock interval. Simultaneously arriving packets would be presented to the internal pipeline for processing one after another.
In a many-to-1 scenario, in which multiple ports operating at a same rate send equal length packets to a same output queue, admission control logic processes the equal length packets serially based on TDM time slot per port assignments. The multiple ports may be operating at a maximum rate supported by the ports or at least a rate high enough to cause overload. If packets arrive at input ports at a high rate, the output queue may be oversubscribed (many-to-1) and packets may back-up in a buffer. If packets arrive at the maximum rate supported by the ports, once a buffer is completely filled, (N−1)/N (where N is a number of input ports) of the incoming equal length packets would be dropped. If the packets are dropped according to input arrival order, and the arrivals into the queue and departures out of the queue are synchronized, which can happen in various scenarios, input from a same port will be inserted onto the output queue every time a packet is dequeued, thereby causing unfairness to other ports.
One way to make the admission control logic fair across multiple input ports is to maintain per source, per destination, per class-of-service (i.e., per input per queue) admission count, which may be used to make drop decisions. This approach can be very expensive, especially when the number of input ports is large.